package com.chuan.base.util;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

public class CopyUtils {  
	
    public static void Copy(Object source, Object dest){  
        
        try {  
        	  // 获取属性  
            BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(),Object.class);  
            PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors();  
      
            BeanInfo destBean = Introspector.getBeanInfo(dest.getClass(),Object.class);  
            PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors();  
            for (int i = 0; i < sourceProperty.length; i++) {  
                  
                for (int j = 0; j < destProperty.length; j++) {  
                      
                    if (sourceProperty[i].getName().equals(destProperty[j].getName())  && sourceProperty[i].getPropertyType() == destProperty[j].getPropertyType()) {  
                        // 调用source的getter方法和dest的setter方法  
                        destProperty[j].getWriteMethod().invoke(dest,sourceProperty[i].getReadMethod().invoke(source));  
                        break;  
                    }  
                }  
            }  
        } catch (Exception e) {  
           System.out.println("属性复制失败:" + e.getMessage());
        }  
    }  

}